package net.loststone

import grails.test.*

class EconInfoTests extends GrailsUnitTestCase {

    // un town comú per tots els tests.
    Town t;

    // inicialitza el town.
    protected void setUp() {
        super.setUp()
        t = new Town(gov_id:'zgz', name:'zaragoza', type:'town')
        t.save();
    }

    // borra el town.
    protected void tearDown() {
        super.tearDown()
        t.delete()
    }

    /**
     * Prova crear sense les dades opcionals.
     */
    void testCrearSenseOpcionals() {
        EconInfo tmp = new EconInfo(nom:"indicador 1", valor:800)
        assertNotNull tmp.save()
        assertNotNull tmp.id
        def econ = EconInfo.get(tmp.id)
        assertEquals "indicador 1", econ.nom
    }

    /**
     * Crea un EconInfo i el guarda.
     */
    void testCrear() {
        EconInfo tmp = new EconInfo(nom:"indicador 1", valor:800, afecta:t, font:'idescat')
        assertNotNull tmp.save()
        assertNotNull tmp.id

        def econ = EconInfo.get(tmp.id)
        assertEquals 800, econ.valor
        assertEquals 'idescat', econ.font
    }

    /**
     * Prova el metode de detectar repetits. Intenta insertar el mateix dues vegades.
     */
    void testForDuplicates() {

        EconInfo tmp = new EconInfo(nom:"indicador 1", valor:800, afecta:t, font:'idescat')
        assertNotNull tmp.save()

        EconInfo tmp2 = new EconInfo(nom:"indicador 1", valor:800, afecta:t, font:'idescat')
        assertTrue(EconInfo.isDuplicated(tmp2) > 0)
    }

     /**
     * Prova el metode de detectar repetits. La ciutat es diferent.
     */
    void testForNoDuplicates() {

        Town t2 = new Town(gov_id:'zgza', name:'zaragoza', type:'town')
        t2.save()

        EconInfo tmp = new EconInfo(nom:"indicador 1", valor:800, afecta:t, font:'idescat')
        assertNotNull tmp.save()


        EconInfo tmp2 = new EconInfo(nom:"indicador 1", valor:800, afecta:t2, font:'idescat')
        assertTrue(EconInfo.isDuplicated(tmp2) == -1)

        t2.delete();
    }
   
}
